home *** CD-ROM | disk | FTP | other *** search
/ TestDrive Windows 1993 Fall / TestDrive Windows 1993 Fall.iso / dbase / samples / vendors.frg < prev    next >
Encoding:
Text File  |  1993-03-09  |  5.2 KB  |  267 lines

  1. * Program............: vendors.FRG
  2. * Date...............: 3-09-93
  3. * Versions...........: dBASE IV, Report 2.0
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap, ll_heading
  16. ll_heading = .F.
  17.  
  18. *-- Test for no records found
  19. IF EOF() .OR. .NOT. FOUND()
  20.    RETURN
  21. ENDIF
  22.  
  23. *-- turn word wrap mode off
  24. _wrap=.F.
  25.  
  26. IF _plength < (_pspacing * 3 + 1) + (_pspacing + 1) + 2
  27.    SET DEVICE TO SCREEN
  28.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  29.    ACTIVATE WINDOW gw_report
  30.    @ 0,1 SAY "Increase the page length for this report."
  31.    @ 2,1 SAY "Press any key ..."
  32.    x=INKEY(0)
  33.    DEACTIVATE WINDOW gw_report
  34.    RELEASE WINDOW gw_report
  35.    RETURN
  36. ENDIF
  37.  
  38. _plineno=0          && set lines to zero
  39. *-- NOEJECT parameter
  40. IF gl_noeject
  41.    IF _peject="BEFORE"
  42.       _peject="NONE"
  43.    ENDIF
  44.    IF _peject="BOTH"
  45.       _peject="AFTER"
  46.    ENDIF
  47. ENDIF
  48.  
  49. *-- Set-up environment
  50. ON ESCAPE DO Prnabort
  51. IF SET("TALK")="ON"
  52.    SET TALK OFF
  53.    gc_talk="ON"
  54. ELSE
  55.    gc_talk="OFF"
  56. ENDIF
  57. gc_space=SET("SPACE")
  58. SET SPACE OFF
  59. gc_time=TIME()      && system time for predefined field
  60. gd_date=DATE()      && system date  "    "    "     "
  61. gl_fandl=.F.        && first and last page flag
  62. gl_prntflg=.T.      && Continue printing flag
  63. gl_widow=.T.        && flag for checking widow bands
  64. gn_length=LEN(gc_heading)  && store length of the HEADING
  65. gn_level=2          && current band being processed
  66. gn_page=_pageno     && grab current page number
  67. gn_pspace=_pspacing && get current print spacing
  68.  
  69.  
  70. *-- Set up procedure for page break
  71. gn_atline=_plength - (_pspacing + 1)
  72. ON PAGE AT LINE gn_atline EJECT PAGE
  73.  
  74. *-- Print Report
  75.  
  76. PRINTJOB
  77.  
  78. *-- Initialize summary variables.
  79. r_msum1=0
  80.  
  81. IF gl_plain
  82.    ON PAGE AT LINE gn_atline DO Pgplain
  83. ELSE
  84.    ON PAGE AT LINE gn_atline DO Pgfoot
  85. ENDIF
  86.  
  87. DO Pghead
  88.  
  89. gl_fandl=.T.        && first physical page started
  90.  
  91. DO Rintro
  92.  
  93. *-- File Loop
  94. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  95.    gn_level=0
  96.    *-- Detail lines
  97.    IF gl_summary
  98.       DO Upd_Vars
  99.    ELSE
  100.       DO __Detail
  101.    ENDIF
  102.    gl_widow=.T.         && enable widow checking
  103.    CONTINUE
  104. ENDDO
  105.  
  106. IF gl_prntflg
  107.    DO Rsumm
  108.    IF _plineno <= gn_atline
  109.       EJECT PAGE
  110.    ENDIF
  111. ELSE
  112.    DO Rsumm
  113.    DO Reset
  114.    RETURN
  115. ENDIF
  116.  
  117. ON PAGE
  118.  
  119. ENDPRINTJOB
  120.  
  121. DO Reset
  122. RETURN
  123. * EOP: vendors.FRG
  124.  
  125. *-- Update summary fields and/or calculated fields.
  126. PROCEDURE Upd_Vars
  127. *-- Count
  128. r_msum1=r_msum1+1
  129. RETURN
  130. * EOP: Upd_Vars
  131.  
  132. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  133. PROCEDURE Prnabort
  134. gl_prntflg=.F.
  135. RETURN
  136. * EOP: Prnabort
  137.  
  138. PROCEDURE Pghead
  139. ?? IIF(gl_plain,'',gd_date) AT 0,;
  140.  IIF(gl_plain,'' , "PAGE " ) AT 71,;
  141.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  142. ?
  143. ?
  144. ?
  145. RETURN
  146. * EOP: Pghead
  147.  
  148. PROCEDURE Rintro
  149. ?
  150. DEFINE BOX FROM 27 TO 56 HEIGHT 4 DOUBLE
  151. ?
  152. ?? "A-T FURNITURE INDUSTRIES" STYLE "B" AT 30
  153. ?
  154. ?? "VENDOR REPORT" STYLE "B" AT 35
  155. ?
  156. ?
  157. ?
  158. ?? ;
  159. "══════════════════════════════════════════════════════════════════════";
  160. + "═════════";
  161. AT 0
  162. ?
  163. RETURN
  164. * EOP: Rintro
  165.  
  166. PROCEDURE __Detail
  167. IF 8 * gn_pspace < gn_atline - (_pspacing * 3 + 1)
  168.    IF gl_widow .AND. _plineno+8 * gn_pspace > gn_atline + 1
  169.       EJECT PAGE
  170.    ENDIF
  171. ENDIF
  172. DO Upd_Vars
  173. ?
  174. ?? "VENDOR I.D.: " STYLE "BU" AT 0,;
  175.  Vendor_id FUNCTION "T" STYLE "BU" 
  176. ?
  177. ?? Vendor FUNCTION "T" AT 0
  178. ?
  179. ?? Address1 FUNCTION "T" AT 0,;
  180.  " " ,;
  181.  Address2 FUNCTION "T" 
  182. ?
  183. ?? City FUNCTION "T" AT 0,;
  184.  ", " ,;
  185.  State FUNCTION "T" ,;
  186.  " " ,;
  187.  Zip FUNCTION "T" 
  188. ?
  189. ?? "CONTACT: " AT 0,;
  190.  Contact FUNCTION "T" ,;
  191.  Phone FUNCTION "T" PICTURE "(XXX)XXX-XXXX" AT 50,;
  192.  "EXT. " AT 64,;
  193.  Phone_ext FUNCTION "T" 
  194. ?
  195. ?? "TERMS: " AT 0,;
  196.  Terms FUNCTION "T" ,;
  197.  "DISCOUNT: " AT 23,;
  198.  Discount PICTURE "99" ,;
  199.  " %" 
  200. ?
  201. ?? ;
  202. "──────────────────────────────────────────────────────────────────────";
  203. + "─────────";
  204. AT 0
  205. ?
  206. RETURN
  207. * EOP: __Detail
  208.  
  209. PROCEDURE Rsumm
  210. ?
  211. ?? ;
  212. "══════════════════════════════════════════════════════════════════════";
  213. + "═════════";
  214. AT 0
  215. ?
  216. ?? "TOTAL NUMBER OF VENDORS: " AT 0,;
  217.  r_msum1 PICTURE "999" 
  218. ?
  219. ?? ;
  220. "══════════════════════════════════════════════════════════════════════";
  221. + "═════════";
  222. AT 0
  223. gl_fandl=.F.        && last page finished
  224. ?
  225. RETURN
  226. * EOP: Rsumm
  227.  
  228. PROCEDURE Pgfoot
  229. PRIVATE _box, _pspacing
  230. gl_widow=.F.         && disable widow checking
  231. _pspacing=1
  232. ?
  233. IF .NOT. gl_plain
  234.    _pspacing=gn_pspace
  235.    ?? "PREPARED BY SALES DEPARTMENT" AT 28
  236. ENDIF
  237. EJECT PAGE
  238. *-- is the page number greater than the ending page
  239. IF _pageno > _pepage
  240.    GOTO BOTTOM
  241.    SKIP
  242.    gn_level=0
  243. ENDIF
  244. IF .NOT. gl_plain .AND. gl_fandl
  245.    _pspacing=gn_pspace
  246.    DO Pghead
  247. ENDIF
  248. RETURN
  249. * EOP: Pgfoot
  250.  
  251. *-- Process page break when PLAIN option is used.
  252. PROCEDURE Pgplain
  253. PRIVATE _box
  254. EJECT PAGE
  255. RETURN
  256. * EOP: Pgplain
  257.  
  258. *-- Reset dBASE environment prior to calling report
  259. PROCEDURE Reset
  260. SET SPACE &gc_space.
  261. SET TALK &gc_talk.
  262. ON ESCAPE
  263. ON PAGE
  264. RETURN
  265. * EOP: Reset
  266.  
  267.